/*
 ++++++++++++++++++++++++++++++++++
 + 产品类目
 + @author 王大宸
 + @date 2025-03-04 15:48:47
 ++++++++++++++++++++++++++++++++++
 */

import {BizQuery} from "@/fly/biz/BizModel";
import {reactive, ref} from "vue";
import {TableData} from "axios";

/**
 * 产品类目 查询参数
 *
 * @author 王大宸
 * @date 2025-03-04 15:48:47
 */
export interface ProductClazzInfoQuery extends BizQuery {
    /** 上级ID */
    parentId?: string,
    /** 标题名称 */
    clazzTitle?: string,
    /** 是否展示/有效标志: Y-有效;N-无效 */
    validFlag?: string
}


/**
 * 产品类目 向后端传值对象
 *
 * @author 王大宸
 * @date 2025-03-04 15:48:47
 */
export interface ProductClazzInfo {
    /** 主键唯一标识 */
    id?: string,
    /** 应用ID, 备用字段 */
    appId?: string,
    /** 租户ID */
    tenantId?: string,
    /** 第一层ID */
    rootId?: string,
    /** 上级ID */
    parentId?: string,
    /** 分类层级, 最多三级 */
    clazzLevel?: string,
    /** 标题名称 */
    clazzTitle?: string,
    /** 图标 */
    clazzIcon?: string,
    /** 排序 */
    sortNum?: string,
    /** 是否展示/有效标志: Y-有效;N-无效 */
    validFlag?: string,
    /** 备注 */
    remarks?: string
}


/**
 * 初始化方法
 */
export default function useProductClazzInfoBuilder() {

    /**
     * 实例化查询数据对象
     */
    const queryProductClazzInfoParams = reactive<ProductClazzInfoQuery>({
        page: 1,
        limit: 10,
        /** 上级ID */
        parentId: '',
        /** 标题名称 */
        clazzTitle: '',
        /** 是否展示/有效标志: Y-有效;N-无效 */
        validFlag: ''
    });

    /**
     * 分页数据
     */
    const tableProductClazzInfoData = reactive<TableData<ProductClazzInfo>>({
        loading: false,
        total: 0,
        rows: [],
    });

    /**
     * 实例化对象
     */
    const productClazzInfo = ref<ProductClazzInfo>({
        /** 主键唯一标识 */
        id: '',
        /** 应用ID, 备用字段 */
        appId: '',
        /** 租户ID */
        tenantId: '',
        /** 第一层ID */
        rootId: '',
        /** 上级ID */
        parentId: '',
        /** 分类层级, 最多三级 */
        clazzLevel: '',
        /** 标题名称 */
        clazzTitle: '',
        /** 图标 */
        clazzIcon: '',
        /** 排序 */
        sortNum: '',
        /** 是否展示/有效标志: Y-有效;N-无效 */
        validFlag: '',
        /** 备注 */
        remarks: ''
    });

    /**
     * 分页列表展示项
     */
    const productClazzInfoColumns = [
        {title: '标题名称', key: 'clazzTitle', ellipsisTooltip: true, align: 'center'},
        {title: '图标', key: 'clazzIcon', ellipsisTooltip: true, align: 'center'},
        {title: '排序', key: 'sortNum', ellipsisTooltip: true, align: 'center'},
        {title: '是否展示', key: 'validFlag', ellipsisTooltip: true, align: 'center'},
        {title: '操作', width: '280px', customSlot: 'operator', key: 'operator', align: 'center', fixed: 'right'}
    ];

    /**
     *  新增/修改/查看 弹窗
     */
    const refProductClazzInfoComponent = ref();

    return {
        queryProductClazzInfoParams,
        tableProductClazzInfoData,
        productClazzInfo,
        productClazzInfoColumns,
        refProductClazzInfoComponent
    }

}